package com.foxire.array;

public class ArrayTest1 {
    public static void main(String[] args) {
        // 完成一个数字华容道
        start(4);
    }
    public static void start(int n) {
       // 定义一个二维数组储存数字列表
        int[][] arr = new int[n][n];

        // 遍历二维数组，给二维数组赋值
        int count = 1;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                arr[i][j] = count++;
            }
        }

        printArr(arr);

        // 打乱二维数组中的元素顺序
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
               // 遍历的到当前位置：arr[i][j]
               // 随机索引：m（随机行） p(随机列)
                int m = (int)(Math.random() * arr.length);
                int p = (int)(Math.random() * arr[i].length);

                // 定义一个临时变量，保存当前位置的元素值
                int temp = arr[m][p];
                // 把当前位置的元素值赋给随机位置
                arr[m][p] = arr[i][j];
                //  把随机位置的元素值赋给当前位置
                arr[i][j] = temp;
            }
        }

        System.out.println("打乱后的数组：");

        printArr(arr);
    }
    public static void printArr(int[][] arr) {
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j] + "\t");
            }
            System.out.println();
        }
    }


}
